Iterators and Generators Homework

Problem 1

Create a generator that generates the squares of numbers up to some number N.


In [10]:
def gensquares(N):
    pass

In [11]:
for x in gensquares(10):
    print x


0
1
4
9
16
25
36
49
64
81

Problem 2

Create a generator that yields "n" random numbers between a low and high number (that are inputs). Note: Use the random library. For example:


In [6]:
import random

random.randint(1,10)


Out[6]:
6

In [7]:
def rand_num(low,high,n):
    pass

In [9]:
for num in rand_num(1,10,12):
    print num


6
7
6
9
9
4
3
7
8
1
6
1

Problem 3

Use the iter() function to convert the string below


In [1]:
s = 'hello'

#code here

Problem 4

Explain a use case for a generator using a yield statement where you would not want to use a normal function with a return statement.

Extra Credit!

Can you explain what gencomp is in the code below? (Note: We never covered this in lecture! You will have to do some googling/Stack Overflowing!)


In [18]:
my_list = [1,2,3,4,5]

gencomp = (item for item in my_list if item > 3)

for item in gencomp:
    print item


4
5

Hint google: generator comprehension is!

Great Job!